package com.example.myletcodelearing.one

import java.util.*


/**
 * @author tgw
 * @date 2022/11/7
 *  * https://leetcode.cn/problems/yong-liang-ge-zhan-shi-xian-dui-lie-lcof/

用两个栈实现一个队列。队列的声明如下，请实现它的两个函数 appendTail 和 deleteHead ，分别完成在队列尾部插入整数和在队列头部删除整数的功能。(若队列中没有元素，deleteHead 操作返回 -1 )。

示例 1:

输入：
["CQueue","appendTail","deleteHead","deleteHead"]
[[],[3],[],[]]
输出：[null,null,3,-1]
 */

fun main(args: Array<String>) {

    var op = Solution11.Solution()
    println("deleteHead 减：${op.deleteHead()}")

    println("appendTail 加：${op.appendTail(5)}")
    println("appendTail 加：${op.appendTail(2)}")
    println("deleteHead 减：${op.deleteHead()}")
    println("deleteHead 减：${op.deleteHead()}")


}

private class Solution11 {
    class Solution {
        val stack1 = Stack<Int>()
        val stack2 = Stack<Int>()

        fun appendTail(value: Int) {
            stack1.push(value);
        }


        fun deleteHead(): Int {
            return when {
                !stack2.isEmpty() -> {
                    stack2.pop()
                }
                stack1.isEmpty() -> {
                    return -1
                }

                else -> {
                    while (!stack1.isEmpty()) {
                        stack2.push(stack1.pop())
                    }
                    return stack2.pop()
                }
            }

        }

    }

}
